/*
*
*   节流函数封装
*
*   startFun(ms, ...args)  开始函数 ==> 开始后会立即执行一次
*
*   ms 定时毫秒数
*
*   args 多个待执行函数 若是函数自动执行 不是函数自动忽略
*
*   endFun()  结束函数
*
* */

class Throttle {
    constructor() {
        this.timer = null;
    }

    startFun = (ms, ...args) => {
        if(this.timer){
            clearTimeout(this.timer);
        }
        this.executeFun(args);
        this.timer = setInterval(() => {
            this.executeFun(args);
        }, ms || 3000);
    };

    executeFun = (args) => {
        args.constructor === Array && args.forEach((callback) => {
            typeof callback === 'function' && callback();
        })
    };

    endFun = () => clearInterval(this.timer);
}

module.exports = {
    throttle : Throttle
}